Many data networks such as computer networks or video transport networks use packet switching mechanisms to transport data. The packets are routed between entities typically referred to as nodes.
One mechanism used to transport packets between nodes is a switch which has a plurality of input ports and a plurality of output ports. Some types of switches may transport a data packet between any input port and any output port. The switch may be constructed so that any possible simultaneous combination of routes between input and output ports is feasible. Such a switch is said to be non-blocking. One type of non-blocking switch is a cross-bar switch.
When the size of the desired switch becomes larger than can be contained in single device, a number of devices may be combined to form a larger switch. When a number of switches—e.g., a cross-bar switch—are combined, the combination is referred to herein either as a fabric or a network. Like a switch, a network may be blocking or non-blocking.
An exemplary architecture for a network utilizes a plurality of devices as source switches, another plurality as sink switches and a third plurality as intermediate switches. The source switches are connected to the input ports of the network and are the source of data for the output ports of the network. The sink switches are connected to output ports of the network and act as the sink for data from the input ports of the network. Many of the links in the network may be shared by different routes which may allow a single source to block the switch by monopolizing a critical link in the network. In particular one sink or sink switch connected to the network may be overloaded with data. Typically a sink or sink switch will have a data buffer to accommodate bursts of data. However the buffer may be overloaded without some control over the incoming data.
One method of controlling the flow of data in the network is to have each source switch request bandwidth from a sink switch. The sink switch in turn generates “credits” for data bandwidth and sends these credits to the requesting source. Systems utilizing credits are known in the art and are described for instance in U.S. Pat. No. 7,619,970 which is hereby incorporated by reference herein in its entirety.
One drawback of current networks/fabrics is the possibility of blocking one route with another. Although links may be shared, certain routes may, at times, become blocked. Routing around the blocked path may be feasible, but it may require rerouting some or all of the existing routes to accommodate the blocked route. The rerouting of the flows through the network may require halting data flows in various switches, leading to unacceptable delay in data delivery to the output ports.
Another drawback of current networks is the requirement that packet headers are processed at each stage/switch in the network. Typical packets are comprised of a data section and a header section. The header is typically constructed to enable a well known protocol such as TCP/IP. At each stage/switch in the network the header is typically processed to extract routing information. This processing requirement can greatly increase the cost, memory size and processing requirements for the switches.
Yet another drawback of the current networks is the lack of information regarding the overall topology of the network. Individual switches within the network may only be aware of the original topology of the network or local connectivity. If one link in the network becomes inoperative data may be lost or delayed.
It would be desirable, therefore, to provide an apparatus and methods that prevent blocked routes in a network, reduce or eliminate packet header processing overhead at each switch and which route around damaged or inoperative links in the network.